<?php

/**
 * 商品管理模型
 */
class ProductModel extends Model{
	//定义表名
	public $table="sn_product";
	//定义验证规则
	public $validate=array(
		array('name','nonull','名称不能为空',2,3),
		array('name','maxlen:30','名称最长30位',2,3),
		array('market_price','nonull','易购价不能为空',2,3),
		array('stock','nonull','易购价不能为空',2,3),

	);
	
	/**
	 * 增加数据
	 */
	public function add_data(){
		//执行自动验证
		// if(!$this->create()) return false;
		//执行插入结果
		if (Q('post.cid')==0) $this->error='请选择分类!';
		//1.商品表
		
		$product=array(
			'pr_name'=>Q('post.name'),
			'pr_unit'=>Q('post.pr_unit'),
			'market_price'=>Q('post.market_price'),
			'shop_price'=>Q('post.shop_price'),
			'stock'=>Q('post.stock'),
			'list_pic'=>Q('post.list_pic'),
			'click'=>Q('post.click'),
			'up_time'=>time(),
			'category_cid'=>Q('post.cid'),
			'type_id'=>Q('post.type_id'),
			'rand_rid'=>Q('post.rand_rid'),
			'user_uid'=>$_SESSION['aid'],
			);
		
		$pr_id=$this->add($product);
		
		// p($default);die;
		$default=array(STATIC_PATH.'default.png');
		
		//2.商品详细表
		$details=array(
			'pr_small_pic'=>implode(',',Q('post.pr_small_pic',$default)),
			'pr_mid_pic'=>implode(',',Q('post.pr_mid_pic',$default)),
			'pr_big_pic'=>implode(',',Q('post.pr_big_pic',$default)),
			'pr_detail'=>$_POST['pr_detail'],
			'pr_after'=>$_POST['pr_after'],
			'pr_id'=>$pr_id
			);
		K('ProductData')->add($details);
		//3.商品属性表
		$data=array();
		//可选属性
			if (isset($_POST['attr'])) {
				foreach ($_POST['attr'] as $k => $v){
					$data[] = array(
						'pvalue'	=> $v,
						'add_price' => 0,
						'type_attrid'	=> $k,
						'pro_id' =>$pr_id
					);
				}
			}
			
			//规格
			if (isset($_POST['spec'])) {
				foreach ($_POST['spec'] as $k => $v){
					for ($i = 0; $i < count($v['tattr_value']); ++$i){
						$data[] = array(
							'pvalue' => $v['tattr_value'][$i],
							'add_price' => $v['add_price'][$i],
							'type_attrid'	=> $k,
							'pro_id'=>$pr_id
						);
					}
				}
			}
			

		//循环插入商品属性表
		foreach ($data as $k => $v) {
			K('ProductAttr')->add($v);
		}

		return true;
	}

	/**
	 * 获得所有数据
	 * @param $where where条件
	 * @param $needPage 如果需要分页处理就传递TRUE
	 */
	public function get_all_data($where=null,$needPage=false){
		//如果使用分页
		if($needPage){
			//分页类用法*********
			//1.标签总条数
			$total = $this->where($where)->count();
			//2.8每页取得多少条
			//3.6显示页码的数量
			$pageObj = new Page($total,8,6);
			//显示分页
			$page = $pageObj->show();
			//分页类算出来的limit，根据总条数，每页取得多少条算出
			$limit = $pageObj->limit();
			//在使用分页类的时候一定要注意limit
			$data = $this->where($where)->limit($limit)->all();
			
			//把 [page] => 上一页12下一页[共2页] [4条记录]压入到数组
			$data['page'] = $page;
		}else{
			//如果不需要分页，直接查询出所有数据
			$data = $this->where($where)->all();
		}	
		return $data;
	}
	//获得一条数据
	public function get_one_data($where=null){
	
		$data=$this->where($where)->find();
		return $data;
	}
	/**
	 * 修改数据
	 */
	public function edit_data($where=null){
		//执行自动验证
		if(!$this->create()) return false;
		//执行更新语句
		
		return $this->where($where)->update();
	}
	
	/**
	 * 删除数据,必须传where条件
	 */
	public function del_data($pr_id){
		//1商品表
		$this->where(array('pr_id'=>$pr_id))->del();
		//2商品详细表
		K('ProductData')->del(array('pr_id'=>$pr_id));
		//3商品属性表
		return K('ProductAttr')->del(array('pro_id'=>$pr_id));
	}
	

}